BOM - Global object
Globale variabelen ken je al en je weet hoe je ze best vermijdt . Je weet ook dat JavaScript-programma's uitgevoerd worden binnen een host milieu (de browser bijvoorbeeld). Met wat je nu over objecten geleerd hebt, is het tijd voor het gehele plaatje: de host omgeving beschikt over een globaal object en alle globale variabelen zijn toegankelijk als eigenschappen van het globale object.
Beschrijving
Als de hostomgeving de webbrowser is, het het globale object window. Een andere manier om toegang tot het globale object (en dit geldt ook in de meeste andere omgevingen) is het gebruik daarvan buiten een constructorfunctie, bijvoorbeeld in de globale programma-code buiten een functie.
Je kan een globale variabele buiten een functie declareren:
var getal = 1;
Je hebt toegang tot die globale variabele op verschillende manieren:
- als de variabele getal;
- als een eigenschap van het globale object, bijvoorbeeld window['getal'] of window.getal;
- als een eigenschap van het globale object door ernaar te verwijzen met this.getal;
Laten we gaan terug naar het geval waarbij we constructor functie opgeroepen hebben zonder de new operator. In dat gevel verwijst this naar het globale object en alle de eigenschappen die zin ingesteld op this, worden eigenschappen van het globale object window.
Als je een constructor functie definieert en je roept doe op zonder de new operator retourneert die "undefined".
function Person(voornaam) { this.voornaam = voornaam; } var persoon = Person('Jan'); typeof persoon; "undefined"
Maar vermits je this binnenin de constructor functie hebt gebruikt om een voornaam eigenschap te maken, beschik je nu over een globale variabele - eigenlijk een eigenschap van het window object:
voornaam; "Jan" window.voornaam; "Jan"